import { defHttp } from '/@/utils/http/axios';

enum Api {
  analyze = '/technology/analysis/analyze',
  statistics = '/technology/analysis/statistics',
}

/**
 * 分析参数接口
 */
export interface AnalyzeParams {
  limit?: number;        // 限制数量，-1 表示不限制（默认 -1）
  patentIds?: string[];  // 专利ID列表（可选）
}

/**
 * 统一的专利技术分析接口
 * 支持多种调用方式：
 * 1. 分析所有：不传参数（默认分析所有未处理专利）
 * 2. 分析指定数量：{ limit: 10 }
 * 3. 分析指定专利：{ patentIds: ['id1', 'id2'] }
 * 
 * @param params 分析参数
 */
export const analyzePatents = (params?: AnalyzeParams) => {
  return defHttp.post({ 
    url: Api.analyze,
    params,
    timeout: 3600000, // 1小时超时
  }, { joinParamsToUrl: true });
};

/**
 * 分析所有未处理专利（快捷方法）
 */
export const analyzeAllPatents = () => {
  return analyzePatents({ limit: -1 });
};

/**
 * 分析指定数量的专利（快捷方法）
 * @param limit 限制数量
 */
export const analyzePatentsWithLimit = (limit: number) => {
  return analyzePatents({ limit });
};

/**
 * 分析单个专利（快捷方法）
 * @param patentId 专利ID
 */
export const analyzeSinglePatent = (patentId: string) => {
  return analyzePatents({ patentIds: [patentId] });
};

/**
 * 分析指定专利列表（快捷方法）
 * @param patentIds 专利ID列表
 */
export const analyzePatentsByIds = (patentIds: string[]) => {
  return analyzePatents({ patentIds });
};

/**
 * 获取统计信息
 */
export const getStatistics = () => {
  return defHttp.get({ url: Api.statistics });
};

